package proyecto.quiniela;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.os.Handler;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

public class ActividadPrincipal extends Activity{
	
	//atributos para mostrar distintos diálogos
	private final int DIALOGO_AYUDA = 0;
	private final int DIALOGO_ACERCADE = 1;
	
	//atributos para los distintos items del menu
	private final int ITEM_AYUDA = 0;
	private final int ITEM_ACERCADE = 1;
	
	//atributos para el splash
	private Handler manejador;
	
	
	
	
	
	public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.index_blanco2);
        
        manejador = new Handler();
        
        new ThreadSplash().start();
        
        //Recogemos los widgets de la interfaz
        final ImageButton conEst = (ImageButton)findViewById(R.id.conEst_ImgButton);
        final ImageButton deCero = (ImageButton)findViewById(R.id.deCero_ImgButton);
        final ImageButton aleatorio = (ImageButton)findViewById(R.id.aleatorio_ImgButton);
        final ImageButton miQuiniela = (ImageButton)findViewById(R.id.miquini_ImgButton);
        
      //configuramos el evento onClick de los botones
		conEst.setOnClickListener(new OnClickListener() {
			/** Se llama a este método cuando se produzca el click en el botón.
			 * 
			 * @param v Será el View clickeado, en nuestro caso, un Button.
			 */
			@Override
			public void onClick(View v) {
				if(thereIsConnection(v.getContext())){
					//con esto hacemos tirar la actividad de las opciones
					Intent misOpc = new Intent();
					misOpc.setClass(ActividadPrincipal.this, Quini_Estadistica.class);
					startActivity(misOpc);
				}else{
					Toast.makeText(v.getContext(), "No hay conexión a internet", Toast.LENGTH_SHORT).show();
				}
					
				
			}
		});
		deCero.setOnClickListener(new OnClickListener() {
			/** Se llama a este método cuando se produzca el click en el botón.
			 * 
			 * @param v Será el View clickeado, en nuestro caso, un Button.
			 */
			@Override
			public void onClick(View v) {
				if(thereIsConnection(v.getContext())){
					//con esto hacemos tirar la actividad de las opciones
					Intent misOpc = new Intent();
					misOpc.setClass(ActividadPrincipal.this, Quini_DeCero.class);
					startActivity(misOpc);
				}else{
					Toast.makeText(v.getContext(), "No hay conexión a internet", Toast.LENGTH_SHORT).show();
					//si antes del .show() le metemos un setView() podemos editar el aspecto del toast
				}
				
			}
		});
		aleatorio.setOnClickListener(new OnClickListener() {
			/** Se llama a este método cuando se produzca el click en el botón.
			 * 
			 * @param v Será el View clickeado, en nuestro caso, un Button.
			 */
			@Override
			public void onClick(View v) {
				if(thereIsConnection(v.getContext())){
					//con esto hacemos tirar la actividad de las opciones
					Intent misOpc = new Intent();
					misOpc.setClass(ActividadPrincipal.this, Quini_Aleatoria.class);
					startActivity(misOpc);
				}else{
					Toast.makeText(v.getContext(), "No hay conexión a internet", Toast.LENGTH_SHORT).show();
				}
					
				
			}
		});
		miQuiniela.setOnClickListener(new OnClickListener() {
			/** Se llama a este método cuando se produzca el click en el botón.
			 * 
			 * @param v Será el View clickeado, en nuestro caso, un Button.
			 */
			@Override
			public void onClick(View v) {
				//con esto hacemos tirar la actividad de las opciones
				
				InputStream lector;
				try {
					lector = new FileInputStream("/sdcard/miquiniela.txt");
				  	BufferedReader bf = new BufferedReader(new InputStreamReader(lector));
				  	if(bf.readLine()!=""){
						Intent misOpc = new Intent();
						misOpc.setClass(ActividadPrincipal.this, Miquiniela.class);
						startActivity(misOpc);
					}
					
						
				} catch (FileNotFoundException e) {
					// TODO Auto-generated catch block
					Toast.makeText(getApplicationContext(),
							"No tienes ninguna quiniela guardada", Toast.LENGTH_SHORT).show();
					  	
					e.printStackTrace();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
		     
				
				
			}
		});
        
	}
	
	
	
	//Método para comprobar la conexión a intenné
    public static boolean thereIsConnection(Context c) {
		//NetworkInfo info = (NetworkInfo) ((ConnectivityManager) InterfazGraficaAHeredar.getInterfazGraficaActual().getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();
    	boolean res = true;
		NetworkInfo info = (NetworkInfo) ((ConnectivityManager) c.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();
		if (info == null || !info.isConnected()) {
			res= false;
		}
		else if (info.isRoaming()) {
			res= true;
		}
		return res;
	}
    
    
    
    
    //MÉTODOS QUE CONTROLAN EL MENU
    
    //creamos los elementos del menu
    public boolean onCreateOptionsMenu(Menu menu){
    	menu.add(0, ITEM_AYUDA, 0, "Ayuda").setIcon(R.drawable.ayuda);
    	menu.add(0, ITEM_ACERCADE, 0, "Acerca de ... ").setIcon(R.drawable.acerca_de);
    	return true;
    }
    
    //controlamos los elementos del menu cuando se seleccionen
    public boolean onOptionsItemSelected(MenuItem item){
    	switch(item.getItemId()){
	    	case ITEM_AYUDA:
	    		//Toast.makeText(ActividadPrincipal.this, "SOY LA AYUDA", Toast.LENGTH_SHORT).show();
	    		showDialog(DIALOGO_AYUDA); //con este método se llama a la creación de un Dialog.
	    		return true;
	    	case ITEM_ACERCADE:
	    		//Toast.makeText(ActividadPrincipal.this, "SOY EL ACERCA DE", Toast.LENGTH_SHORT).show();
	    		showDialog(DIALOGO_ACERCADE); 
	    		return true;
    	}	
    	return false;
    }
    
    
    //Se llama a este método cuando se debe mostrar un diálogo en la actividad. 
    protected Dialog onCreateDialog(int id) {
    	
    	//Creamos el diálogo.
    	final Dialog d = new Dialog(ActividadPrincipal.this);
    	
    	//segun del boton del menu que sea pulsado se accede a un dialogo o a otro.
    	switch(id){
    		case DIALOGO_AYUDA:
		    	
		    	//Configuramos el diálogo:
		    	//Configuramos que no se pueda salir de él pulsando fuera de su zona.
		    	d.setCanceledOnTouchOutside(false);
		    	
		    	//Le damos un título.
		    	d.setTitle("¡Bienvenido a Pleno al 15!");
		    	
		    	//Le damos una vista que mostrar
		    	d.setContentView(R.layout.dialogo_ayuda_actividadprincipal);
		    	
		    	//Recogemos los widgets pertenecientes al layout
		    	final ImageButton aceptar = (ImageButton)d.findViewById(R.id.aceptar_imgButton);
		    	
		    	final TextView parrafo1 = (TextView)d.findViewById(R.id.texto1_tview);
		    	
		    	final TextView encabezado2 = (TextView)d.findViewById(R.id.encabezado2);
		    	final TextView parrafo2 = (TextView)d.findViewById(R.id.texto2_tview);
		    	
		    	final TextView encabezado3 = (TextView)d.findViewById(R.id.encabezado3);
		    	final TextView parrafo3 = (TextView)d.findViewById(R.id.texto3_tview);
		    	
		    	final TextView encabezado4 = (TextView)d.findViewById(R.id.encabezado4);
		    	final TextView parrafo4 = (TextView)d.findViewById(R.id.texto4_tview);
		    	
		    	final TextView encabezado5 = (TextView)d.findViewById(R.id.encabezado5);
		    	final TextView parrafo5 = (TextView)d.findViewById(R.id.texto5_tview);
		    	
		    	//modificamos los textos de los párrafos y encabezados
		    	
		    	parrafo1.setText(" Esta es la ayuda de Pleno al 15, aquí le enseñaremos" +
		    			" a usar las distintas opciones que ofrece nuestra aplicación, comenzamos ...");
		    	
		    	encabezado2.setText(" Crear quiniela de cero: ");
		    	parrafo2.setText("Esta sección ofrece al usuario" +
		    			" la próxima quiniela que se va a jugar tal y como aparece en los boletos" +
		    			" de loterías y apuestas del estado." +
		    			" El usuario puede rellenar una columna simple y guardarla para disponer" +
		    			" de sus pronósticos siempre que quiera.");
		    	
		    	encabezado3.setText(" Quiniela con estadística: ");
		    	parrafo3.setText("Es una ayuda a la creación de una quiniela" +
		    			" de cero; gracias a la gran cantidad de información que tiene almacenada" +
		    			" esta aplicación podemos ofrecer al usuario el pronóstico qué más se aproxíme" +
		    			" a la realidad según estadísticas de resultados de temporadas anteriores." +
		    			" Esta ayuda aparece marcada en verde, aun así, el usuario puede marcar el" +
		    			" pronóstico que prefiera.");
		    	
		    	encabezado4.setText(" Quiniela aleatoria: ");
		    	parrafo4.setText("Hoy no tenemos ganas de pensar mucho ¿verdad?," +
		    			" esto no es problema, Pleno al 15 generará para usted una columna simple de forma aleatoria," +
		    			" el usuario, por supuesto, es libre de modificar lo que quiera, para algo es el que" +
		    			" paga.");
		    	
		    	encabezado5.setText(" Mi quiniela: ");
		    	parrafo5.setText("Tanto si ha optado por la opción de crear su" +
		    			" quiniela de cero, usando nuestra estadística o bien de forma aleatoria siempre" +
		    			" dispondrá de la opción de guardar sus pronósticos para modificarlos o " +
		    			" consultarlos cada vez que quiera en esta sección, sus pronósticos irán" +
		    			" siempre con usted.");
		    	
		    	
		    	
		    	//configuramos el pulsado del boton aceptar
		    	aceptar.setOnClickListener(new OnClickListener() {
					
		    		/** Se llama a este método cuando se produzca el click en el botón.
					 * 
					 * @param v Será el View clickeado, en nuestro caso, un ImageButton.
					 */
		
					public void onClick(View v) {
						//Cerramos el diálogo
						d.dismiss();
					}
				});
		    	break;
		    	
    		case DIALOGO_ACERCADE:
    			
    			//Configuramos el diálogo:
		    	//Configuramos que no se pueda salir de él pulsando fuera de su zona.
		    	d.setCanceledOnTouchOutside(false);
		    	
		    	//Le damos un título.
		    	d.setTitle("El equipo de Pleno al 15");
		    	
		    	//Le damos una vista que mostrar
		    	d.setContentView(R.layout.dialogo_acercade);
		    	
		    	//Recogemos los widgets pertenecientes al layout
		    	final TextView intro = (TextView)d.findViewById(R.id.acercade_intro);
		    	final TextView victoria = (TextView)d.findViewById(R.id.presentacion_victoria);
		    	final TextView navas = (TextView)d.findViewById(R.id.presentacion_navas);
		    	final ImageButton acercaD_aceptar = (ImageButton)d.findViewById(R.id.acercade_aceptar);
		    	
		    	//modificamos los textos
		    	intro.setText(" Estos son los culpables de tu nueva adicción a las quinielas, dos" +
		    			" chavales estudiantes de informática a los que no les importa perder" +
		    			" un poco de su tiempo con tal de hacernos ricos a todos.");
		    	
		    	victoria.setText(" Edad: 25\n" +
		    			" I.T. Informática de Gestión.");
		    	
		    	navas.setText(" Edad: 26\n" +
		    			" I.T. Informática de Gestión ");
		    	
		    	//configuramos el pulsado del boton aceptar
		    	acercaD_aceptar.setOnClickListener(new OnClickListener() {
					
		    		/** Se llama a este método cuando se produzca el click en el botón.
					 * 
					 * @param v Será el View clickeado, en nuestro caso, un ImageButton.
					 */
		
					public void onClick(View v) {
						//Cerramos el diálogo
						d.dismiss();
					}
				});
    			break;
	    }
    	
    	return d;
    }
    
    
    //creación del Splash
    private class ThreadSplash extends Thread{
    	public void run(){
    		
			try {
				Thread.sleep(5000);
				
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
			manejador.post(new Runnable() {
				
				@Override
				public void run() {
					// TODO Auto-generated method stub
					ImageView imagenSplash = (ImageView)findViewById(R.id.splash);
					imagenSplash.setVisibility(View.INVISIBLE);
				}
			});
    	}
    }

}
